#pragma once

#include <functional>
#include <memory>
#include <SockOpt.h>

class TcpConnection;
class Buffer;

using MessageCallback = std::function<void(const std::shared_ptr<TcpConnection>&, Buffer& inBuffer)>;
using WriteCompleteCallback = std::function<void(const std::shared_ptr<TcpConnection>&)>;
using AcceptConnectionCallback = std::function<void(socket_t)>;
using ConnectionEstanblishCallback = std::function<void(const std::shared_ptr<TcpConnection>&)>;
using CloseConnectionCallback = std::function<void(const std::shared_ptr<TcpConnection>&)>;
using SSLHandshakeCallback = std::function<void(const std::shared_ptr<TcpConnection>&)>;
